const BasePlugin = require('./base-plugin');

class FilePlugin extends BasePlugin {
    constructor() {
        super();
        this.name = '文件管理插件';
        this.version = '1.0.0';
        this.priority = 3; // 高优先级
        this.author = '系统';
        this.description = '文件上传下载管理功能';
    }

    /**
     * 处理群文件上传事件
     */
    onGroupUpload(event, reply) {
        const { group_id, user_id, file } = event;
        const fileInfo = `📎 新文件上传\n文件名: ${file.name}\n大小: ${this.formatFileSize(file.size)}\n上传者: @${user_id}`;
        
        reply(fileInfo);
        return true;
    }

    /**
     * 处理离线文件事件
     */
    onOfflineFile(event, reply) {
        const { user_id, file } = event;
        const fileInfo = `📥 收到离线文件\n文件名: ${file.name}\n大小: ${this.formatFileSize(file.size)}\n来自: @${user_id}`;
        
        reply(fileInfo);
        return true;
    }

    /**
     * 处理群聊消息中的文件相关指令
     */
    onGroupMessage(event, reply) {
        const message = event.raw_message;
        
        if (message === '文件列表') {
            reply('📁 文件列表功能开发中...');
            return true;
        }
        
        if (message === '上传文件') {
            reply('📤 请使用群文件上传功能，我会通知大家');
            return true;
        }

        if (message === '文件帮助') {
            const helpText = `📁 文件管理帮助
• 文件列表 - 查看群文件列表
• 上传文件 - 获取上传说明
• 自动监控文件上传和离线文件`;
            reply(helpText);
            return true;
        }

        return false;
    }

    formatFileSize(bytes) {
        if (bytes === 0) return '0 B';
        const k = 1024;
        const sizes = ['B', 'KB', 'MB', 'GB'];
        const i = Math.floor(Math.log(bytes) / Math.log(k));
        return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];
    }
}

module.exports = FilePlugin;